home *** CD-ROM | disk | FTP | other *** search
/ Aminet 33 / Aminet 33 - October 1999.iso / Aminet / util / misc / VMM_src.lha / VMM / sv_regs60.asm < prev    next >
Encoding:
Assembly Source File  |  1995-12-16  |  2.6 KB  |  89 lines

  1.                INCLUDE   "exec/funcdef.i"
  2.                INCLUDE   "exec/exec_lib.i"
  3.                INCLUDE   "macros.i"
  4.                INCLUDE   "shared_defs.i"
  5.  
  6. * $Id: sv_regs60.asm,v 1.3 95/12/16 18:36:08 Martin_Apel Exp $
  7.  
  8.                XDEF      _Is68060
  9.                XDEF      _CPushP60
  10.                XDEF      _CPushL60
  11.  
  12.                MACHINE   68060
  13.  
  14.                SECTION   CODE
  15.  
  16. _Is68060:      movem.l   a5/a6,-(sp)
  17.                move.l    4,a6
  18.                lea       Check68060(pc),a5
  19.                jsr       _LVOSupervisor(a6)
  20.                movem.l   (sp)+,a5-a6
  21.                rts
  22.                
  23. Check68060:    move.w    #$2700,sr            ; disable interrupts
  24.                movec     VBR,a0
  25.                lea       FLineTrap(pc),a1
  26.                moveq     #1,d0
  27.                lea       11*4(a0),a0
  28.                move.l    (a0),d1             ; save old F-line vector
  29.                move.l    a1,(a0)
  30.                cpusha    bc
  31.                plpar     (a0)
  32.                PRINT_DEB "PLPA did not generate exception"
  33. GoOn
  34.                move.l    d1,(a0)
  35.                cpusha    bc
  36.                move.w    #$2000,sr            ; enable interrupts
  37.                rte
  38.  
  39. FLineTrap:     moveq     #0,d0
  40.                PRINT_DEB "PLPA generated exception"
  41.                lea       GoOn(pc),a1
  42.                move.l    a1,2(sp)
  43.                cpusha    bc
  44.                rte
  45.  
  46. ******************************************************************************
  47.  
  48.                ALIGN_LONG
  49. _CPushP60:     movem.l   a5/a6,-(sp)
  50.                move.l    12(sp),a0
  51.                lea       CPushP(pc),a5
  52.                move.l    $4,a6
  53.                jsr       _LVOSupervisor(a6)
  54.                movem.l   (sp)+,a5/a6
  55.                rts
  56.  
  57.                ALIGN_LONG
  58. CPushP:        movec     cacr,d0
  59.                move.l    d0,d1
  60.                bclr.l    #28,d0         ; invalidate pushed data
  61.                movec     d0,cacr
  62.                CPUSHP    BC,(a0)
  63.                movec     d1,cacr
  64.  
  65.                rte
  66.  
  67. ******************************************************************************
  68.  
  69.                ALIGN_LONG
  70. _CPushL60:     movem.l   a5/a6,-(sp)
  71.                move.l    12(sp),a0
  72.                lea       CPushL(pc),a5
  73.                move.l    $4,a6
  74.                jsr       _LVOSupervisor(a6)
  75.                movem.l   (sp)+,a5/a6
  76.                rts
  77.  
  78.                ALIGN_LONG
  79. CPushL:        movec     cacr,d0
  80.                move.l    d0,d1
  81.                bclr.l    #28,d0         ; invalidate pushed data
  82.                movec     d0,cacr
  83.                CPUSHL    BC,(a0)
  84.                movec     d1,cacr
  85.  
  86.                rte
  87.  
  88.                END
  89.